Networks and distributed storage allow data and storage space to be shared between devices located anywhere a connection is available. These implementations may range from a single machine offering a shared drive over a home network to an enterprise-class cloud storage array with multiple copies of data distributed throughout the world. Larger implementations may incorporate Network Attached Storage (NAS) devices, Storage Area Network (SAN) devices, and other configurations of storage elements and controllers in order to provide data and manage its flow. Improvements in distributed storage have given rise to a cycle where applications demand increasing amounts of data delivered with reduced latency, greater reliability, and greater throughput.
At least to reduce latency and increase throughput, many data storage systems use two or more storage controllers or simply controllers in an “active-active” configuration. The “active-active” configuration allows multiple controllers to access data in the data storage system at the same time. Conventionally, these data storage systems have access restrictions, which, for example, allow each controller access to data in only a particular volume or logic unit (LUN). As each controller processes read and write requests for the LUN associated with that controller, each controller stores data from these read and write requests in a memory cache assigned to the storage controller. Periodically, the data in the assigned memory cache is flushed to another storage drive for long term storage, which is a time consuming process. Because the flushing occurs occasionally, data in the memory cache of each controller becomes large and cannot be quickly and efficiently transferred to another storage device as needed.
There may be instances in the data storage system where there data storage system changes ownership of the logic unit from a first controller to a second controller. Conventionally, when the change of ownership occurs, the first controller performs a flush operation which flushes the data from its memory cache to a storage drive before the second controller can operate on the logic unit. However, when the size of the data is large, the flush operation may take a long time. Additionally, during the flush operation, the data storage system typically either stops or slows down the I/O operations between the first controller, the second controller, and the host applications. As a result, the flush operation during an ownership change of a logic unit interferes with the access of the host applications to data stored in the data storage system.